package com.mcz.light_appproject.app.view.view;


import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.RotateAnimation;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;

import com.mcz.light_appproject.R;


/**
 *
 * 自定义listview
 * 下拉加载 刷新
 * @author mcz
 *
 */
public class PullToRefreshHeader extends LoadingLayout{
	public enum Style {
		NORMAL, NO_TIME, MORE
	}

	private ImageView mArrowImageView;
	private ProgressBar mProgressBar;
	private TextView mHintTextView, mHeaderTimeView, mHintMoreView;
	private ViewGroup mHeaderTimelayout;

	private Animation mRotateUpAnim, mRotateDownAnim;

	private Style mStyle = Style.NORMAL;

	private final static int ROTATE_ANIM_DURATION = 180;

	public PullToRefreshHeader(Context context) {
		this(context, Style.NORMAL);
	}

	public PullToRefreshHeader(Context context, Style style) {
		super(context, true,  PullToRefreshBase.Orientation.VERTICAL);
		setContentView(R.layout.pull_to_refresh_header);

		mArrowImageView = (ImageView) findViewById(R.id.header_arrow);
		mHintTextView = (TextView) findViewById(R.id.header_hint);
		mHeaderTimeView = (TextView) findViewById(R.id.header_time);
		mProgressBar = (ProgressBar) findViewById(R.id.header_progress);
		mHeaderTimelayout = (ViewGroup) findViewById(R.id.header_time_layout);
		mHintMoreView = (TextView) findViewById(R.id.header_hint_more);

		mRotateUpAnim = new RotateAnimation(0.0f, -180.0f, Animation.RELATIVE_TO_SELF, 0.5f,
				Animation.RELATIVE_TO_SELF, 0.5f);
		mRotateUpAnim.setDuration(ROTATE_ANIM_DURATION);
		mRotateUpAnim.setFillAfter(true);
		mRotateDownAnim = new RotateAnimation(-180.0f, 0.0f, Animation.RELATIVE_TO_SELF, 0.5f,
				Animation.RELATIVE_TO_SELF, 0.5f);
		mRotateDownAnim.setDuration(ROTATE_ANIM_DURATION);
		mRotateDownAnim.setFillAfter(true);

		if (style == Style.NO_TIME) {
			mHeaderTimelayout.setVisibility(View.GONE);
		} else if (style == Style.MORE) {
			mHeaderTimelayout.setVisibility(View.GONE);
		}
		mStyle = style;
	}

	@Override
	public void pullToRefresh() {
		if (mStyle == Style.MORE) {
			mHintTextView.setText(R.string.xlistview_header_hint_more);
		} else {
			mHintTextView.setText(R.string.xlistview_header_hint_normal);
		}
		if (mRotateUpAnim == mArrowImageView.getAnimation()) {
			mArrowImageView.startAnimation(mRotateDownAnim);
		}
	}

	@Override
	public void refreshing() {
		mHintTextView.setText(R.string.xlistview_header_hint_loading);
		mArrowImageView.clearAnimation();
		mArrowImageView.setVisibility(View.GONE);
		mProgressBar.setVisibility(View.VISIBLE);
	}

	@Override
	public void releaseToRefresh() {
		if (mStyle == Style.MORE) {
			mHintTextView.setText(R.string.xlistview_footer_hint_ready);
		} else {
			mHintTextView.setText(R.string.xlistview_header_hint_ready);
		}
		mArrowImageView.startAnimation(mRotateUpAnim);
	}

	@Override
	public void onPull(float scaleOfLayout) {
	}

	@Override
	public void reset() {
		if (mStyle == Style.MORE) {
			mHintTextView.setText(R.string.xlistview_header_hint_more);
		} else {
			mHintTextView.setText(R.string.xlistview_header_hint_normal);
		}
		mArrowImageView.clearAnimation();
		mArrowImageView.setVisibility(View.VISIBLE);
		mProgressBar.setVisibility(View.GONE);
		mHintMoreView.setVisibility(View.GONE);
	}

	@Override
	public void disableRefresh() {
		if (mStyle == Style.MORE) {
			mHintMoreView.setVisibility(View.VISIBLE);
			mHintTextView.setText(R.string.xlistview_footer_no_more);
		}
	}

	public void setLastRefreshTime(CharSequence text) {
		mHeaderTimeView.setText(text);
	}
}
